// using System.Collections;
// using System.Collections.Generic;
// using UnityEngine;

// /// <summary>
// /// 鸟群模拟全局管理器，负责生成和管理所有特殊点及其鸟群
// /// </summary>
// public class FlockManager : MonoBehaviour
// {
//     // ========== 公开变量 ==========
//     [Header("特殊点生成设置")]
//     [Tooltip("特殊点预制体，需要包含SpawnPoint组件")]
//     public GameObject spawnPointPrefab;
//     [Tooltip("要生成的特殊点数量")]
//     public int spawnPointCount = 5;
//     [Tooltip("特殊点生成的区域大小")]
//     public float spawnAreaSize = 5f;

//     [Header("鸟群生成设置")]
//     [Tooltip("鸟的预制体，需要包含Boid组件")]
//     public GameObject boidPrefab;
//     [Tooltip("每个特殊点生成的鸟数量")]
//     public int boidsPerPoint = 10;
//     [Tooltip("鸟生成时距离特殊点的最大半径")]
//     public float spawnRadius = 3f;

//     [Header("行为参数")]
//     [Tooltip("鸟离特殊点的最大允许距离，超过会被销毁")]
//     public float maxDistanceFromPoint = 10f;
//     [Tooltip("特殊点对鸟的吸引力强度系数")]
//     public float pointAttractionStrength = 2f;

//     // ========== 私有变量 ==========
//     private List<SpawnPoint> allSpawnPoints = new List<SpawnPoint>(); // 所有特殊点列表
//     private int currentCheckIndex = 0; // 当前检测的特殊点索引（用于分帧检测）
//     private int checksPerFrame = 5;    // 每帧最多检测的鸟数量

//     /// <summary>
//     /// 初始化函数，游戏开始时调用
//     /// </summary>
//     void Start()
//     {
//         GenerateSpawnPoints(); // 生成所有特殊点
//     }

//     /// <summary>
//     /// 每帧更新函数
//     /// </summary>
//     void Update()
//     {
//         PerformFrameDistributedChecks(); // 执行分帧边界检测
//     }

//     /// <summary>
//     /// 在场景中随机生成特殊点
//     /// </summary>
//     private void GenerateSpawnPoints()
//     {
//         for (int i = 0; i < spawnPointCount; i++)
//         {
//             // 在指定区域内随机生成位置
//             Vector3 spawnPos = new Vector3(
//                 Random.Range(-spawnAreaSize, spawnAreaSize),
//                 0,
//                 Random.Range(-spawnAreaSize, spawnAreaSize)
//             );

//             // 实例化特殊点
//             GameObject pointObj = Instantiate(spawnPointPrefab, spawnPos, Quaternion.identity);
//             SpawnPoint spawnPoint = pointObj.GetComponent<SpawnPoint>();

//             // 初始化特殊点
//             spawnPoint.Initialize(this, boidPrefab, boidsPerPoint, spawnRadius);

//             // 添加到管理列表
//             allSpawnPoints.Add(spawnPoint);
//         }
//     }

//     /// <summary>
//     /// 分帧执行边界检测，避免一次性检测所有鸟带来的性能问题
//     /// </summary>
//     private void PerformFrameDistributedChecks()
//     {
//         int checksDone = 0; // 本帧已完成的检测数量

//         // 循环检测特殊点，直到检测完足够数量的鸟或所有特殊点都已检测
//         for (int i = 0; i < allSpawnPoints.Count && checksDone < checksPerFrame; i++)
//         {
//             // 使用循环索引确保均匀检测所有特殊点
//             int pointIndex = (currentCheckIndex + i) % allSpawnPoints.Count;
//             SpawnPoint point = allSpawnPoints[pointIndex];

//             // 只检测活跃的特殊点
//             if (point != null && point.gameObject.activeInHierarchy)
//             {
//                 // 让特殊点检测自己的鸟群，并返回实际检测的数量
//                 point.CheckBoidBoundaries(checksPerFrame - checksDone);
//                 checksDone += point.BoidCount;
//             }
//         }

//         // 更新索引，准备下一帧检测
//         currentCheckIndex = (currentCheckIndex + 1) % allSpawnPoints.Count;
//     }

//     /// <summary>
//     /// 从管理器中移除特殊点，并销毁其所有鸟
//     /// </summary>
//     /// <param name="point">要移除的特殊点</param>
//     public void RemoveSpawnPoint(SpawnPoint point)
//     {
//         if (allSpawnPoints.Contains(point))
//         {
//             allSpawnPoints.Remove(point); // 从列表中移除
//             point.DestroyAllBoids();      // 销毁所有关联的鸟
//             Destroy(point.gameObject);    // 销毁特殊点对象
//         }
//     }
// }